package com.dianpingmedia.common.utils;

public class FormatJSONUtil {

    public static String format(String jsonStr) {
        try {
            int level = 0;
            StringBuffer jsonForMatStr = new StringBuffer();
            for (int i = 0; i < jsonStr.length(); i++) {
                char c = jsonStr.charAt(i);
                if (level > 0 && '\n' == jsonForMatStr.charAt(jsonForMatStr.length() - 1)) {
                    jsonForMatStr.append(getLevelStr(level));
                }
                switch (c) {
                    case '{':
                    case '[':
                        jsonForMatStr.append(c + "\n");
                        level++;
                        break;
                    case ',':
                        jsonForMatStr.append(c + "\n");
                        break;
                    case '}':
                    case ']':
                        jsonForMatStr.append("\n");
                        level--;
                        jsonForMatStr.append(getLevelStr(level));
                        jsonForMatStr.append(c);
                        break;
                    default:
                        jsonForMatStr.append(c);
                        break;
                }
            }

            return "\n" + jsonForMatStr.toString();
        } catch (Exception e) {
        }
        return "\n" +jsonStr;
    }

    private static String getLevelStr(int level) {
        StringBuffer levelStr = new StringBuffer();
        for (int levelI = 0; levelI < level; levelI++) {
            levelStr.append("\t");
        }
        return levelStr.toString();
    }
}
